package org.jeecg.common.hepler;

import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;

import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.google.common.collect.Lists;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.constant.YsReptileConstant;
import org.jeecg.common.dto.NewsDTO;
import org.jeecg.common.dto.YctdInfoDTO;
import org.jeecg.common.util.DingDingSend;
import org.jeecg.common.util.DingDingUtils;
import org.jeecg.common.util.RedisUtil;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * 发送钉钉通知公共类
 */
@Slf4j
@Component
@RequiredArgsConstructor
public class DingDingHelper {



    @Resource
    private RedisUtil redisUtil;

    /**
     * 发送钉钉方法
     *
     * @param data
     * @param type
     */
    public void sendData(String data, Integer type) throws Exception {
        if (StringUtils.isBlank(data)) {
            return;
        }
        DingDingSend.sendAlarm("我是测试发送的消息"+data);
    }
    //List<YctdInfoDTO> yctdInfoDTOS
    /**
     * 发送药材快讯到钉钉方法
     *
     * @param data

     */
    public void sendData(List<YctdInfoDTO> data) throws Exception {
        if (CollectionUtils.isEmpty(data)) {
            return;
        }
        StringBuffer sb = new StringBuffer("萌宝宝，你的专属速递~~~~~");
        data.forEach(it->{
            sb.append("~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
            sb.append("标题："+it.getTitle()+"\t");
            sb.append("发布时间："+it.getTime()+"\t");
            sb.append("内容："+it.getContent()+"\t");
            sb.append("\n");
        });
        log.info("要发送的内容："+sb.toString());
        DingDingSend.sendAlarm(sb.toString());
    }

    /**
     * 发送灰度钉钉方法
     * @param btcResult
     */
//    public void sendDataHD(List<NewsDTO> btcResult,String mesType) throws Exception {
//        if (CollectionUtils.isEmpty(btcResult)) {
//            return;
//        }
//        log.info("过滤前数据条数：{}", btcResult.size());
//        btcResult = this.filtering(btcResult);
//        log.info("过滤后的数据条数：{}", btcResult.size());
//        DingDingFeedCardVo dingDingFeedCardVo=  getHuiDUDingDingFeedCard(btcResult,mesType);
//        log.info("要发送的对象{}", dingDingFeedCardVo.getJSONObjectString());
//        DingDingUtils.sendToDingDing(dingDingFeedCardVo.getJSONObjectString(), dingDingFeedCardVo.getMsgType());
//        //保存到数据库
//        ysNewsService.saveNewsToDb(btcResult);
//    }

    /**
     *  获取基础法定的方法
     * @param btcResult
     * @param mesType
     * @return
     */
//    private DingDingFeedCardVo getDingDingFeedCard(List<NewsDTO> btcResult, String mesType){
//        DingDingFeedCardVo dingDingFeedCardVo = DingDingFeedCardVo.builder().build();
//        dingDingFeedCardVo.setMsgType(mesType);
//        List<BaseLinkVo> baseLinkVos = Lists.newArrayList();
//        btcResult.forEach(item -> {
//            BaseLinkVo baseLinkVo = BaseLinkVo.builder()
//                    .title("-" + item.getTitle())
//                    .picURL(getUrl())
//                    .messageURL(item.getUrl())
//                    .build();
//            baseLinkVos.add(baseLinkVo);
//        });
//        dingDingFeedCardVo.setLinks(baseLinkVos);
//        return dingDingFeedCardVo;
//    }

    /**
     *  获取基础法定的方法
     * @param btcResult
     * @param mesType
     * @return
     */
//    private DingDingFeedCardVo getHuiDUDingDingFeedCard(List<NewsDTO> btcResult, String mesType){
//        DingDingFeedCardVo dingDingFeedCardVo = DingDingFeedCardVo.builder().build();
//        dingDingFeedCardVo.setMsgType(mesType);
//        List<BaseLinkVo> baseLinkVos = Lists.newArrayList();
//        btcResult.forEach(item -> {
//            String one = item.getContent().split("\\|")[0];
//            String two = item.getContent().split("\\|")[1];
//            BaseLinkVo baseLinkVo = BaseLinkVo.builder()
//                    .title(String.format("-%s 持仓价值：%s    持仓数量：%s",item.getTitle(),one,two))
//                    .picURL(item.getPictureUrl())
//                    .messageURL(item.getUrl())
//                    .build();
//            baseLinkVos.add(baseLinkVo);
//        });
//        dingDingFeedCardVo.setLinks(baseLinkVos);
//        return dingDingFeedCardVo;
//    }
    /**
     * 数据去重
     *
     * @param data
     * @return
     */
    private List<NewsDTO> filtering(List<NewsDTO> data) {
        Set<NewsDTO> ysNewsSet = new HashSet<>(data);
        return new ArrayList<>(ysNewsSet);
    }



}
